package cn.kgm.core.http.request;

import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @kapi #技术改变自己#
 * @AUTHOR: ruoyi
 * @DATE: 2023/6/11 20:47周日
 * @PACKAGE: cn.kgm.core.base.response.BaseController
 */
public abstract class BaseController {

    /**
     * 当前页
     */
    protected static final String PAGE_NO = "pageNo";
    /**
     * 页面大小
     */
    protected static final String PAGE_SIZE = "pageSize";
    /**
     * 请求信息
     */
    @Resource
    protected HttpServletRequest request;
    /**
     * 返回值信息
     */
    @Resource
    protected HttpServletResponse response;

    /**
     * 默认每页条目10
     */
    int DEFAULT_SIZE = 20;
    /**
     * 最大条目数100
     */
    int MAX_SIZE = 100;


    /**
     * 获取当前页
     *
     * @return current
     */
    protected Integer getPageNo() {
        return Convert.toInt(request.getParameter(PAGE_NO), 1);
    }

    /**
     * 获取分页大小
     *
     * @return size
     */
    protected Integer getPageSize() {
        Integer pageSize = Convert.toInt(request.getParameter(PAGE_SIZE), DEFAULT_SIZE);
        return Math.min(pageSize, MAX_SIZE);
    }

    /**
     * 获取分页对象
     * @return 分页对象
     */
    protected <T> Page<T> getPage() {
        /**
         *页数
         */
        Integer pageNo = getPageNo();
        /**
         * 分页大小
         */
        Integer pageSize = getPageSize();
        /**
         * 是否查询分页
         */
        return new Page<>(pageNo, pageSize);
    }
}
